home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / CMApplication.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  28.2 KB  |  805 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        CMApplication.mod
  3.  
  4.      Contains:    Color Matching Interfaces
  5.  
  6.      Version:    Technology:    ColorSync 2.0
  7.                  Package:    Universal Interfaces 2.1ß1 in “MPW Prerelease” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$IF UNDEFINED OLDROUTINENAMES*)
  21. (*$SET OLDROUTINENAMES FALSE*)
  22. (*$END*)
  23. (*$TAGS-*)
  24. (*$CALLING PASCAL*)
  25. MODULE CMApplication;
  26.  
  27. IMPORT SYSTEM, Types, Quickdraw, Files, Printing, CMICCProfile;
  28.  
  29. (* $PUSH*)
  30. (* $ALIGN MAC68K*)
  31. (* $LibExport+*)
  32.  
  33. CONST
  34.     gestaltColorSync20*            = $0200;
  35.  
  36.     kDefaultCMMSignature*        = LONG("appl");
  37.  
  38. (* Macintosh 68K trap word *)
  39.     cmTrap*                        = $ABEE;
  40.  
  41. (* PicComment IDs *)
  42.     cmBeginProfile*                = 220;
  43.     cmEndProfile*                = 221;
  44.     cmEnableMatching*            = 222;
  45.     cmDisableMatching*            = 223;
  46.     cmComment*                    = 224;
  47.  
  48. (* PicComment selectors for cmComment *)
  49.     cmBeginProfileSel*            = 0;
  50.     cmContinueProfileSel*        = 1;
  51.     cmEndProfileSel*                = 2;
  52.  
  53. (* Defines for version 1.0 CMProfileSearchRecord.fieldMask *)
  54.     cmMatchCMMType*                = $00000001;
  55.     cmMatchApplProfileVersion*    = $00000002;
  56.     cmMatchDataType*                = $00000004;
  57.     cmMatchDeviceType*            = $00000008;
  58.     cmMatchDeviceManufacturer*    = $00000010;
  59.     cmMatchDeviceModel*            = $00000020;
  60.     cmMatchDeviceAttributes*        = $00000040;
  61.     cmMatchFlags*                = $00000080;
  62.     cmMatchOptions*                = $00000100;
  63.     cmMatchWhite*                = $00000200;
  64.     cmMatchBlack*                = $00000400;
  65.  
  66. (* Defines for version 2.0 CMSearchRecord.searchMask *)
  67.     cmMatchAnyProfile*            = $00000000;
  68.     cmMatchProfileCMMType*        = $00000001;
  69.     cmMatchProfileClass*            = $00000002;
  70.     cmMatchDataColorSpace*        = $00000004;
  71.     cmMatchProfileConnectionSpace* = $00000008;
  72.     cmMatchManufacturer*            = $00000010;
  73.     cmMatchModel*                = $00000020;
  74.     cmMatchAttributes*            = $00000040;
  75.     cmMatchProfileFlags*            = $00000080;
  76.  
  77. (* Result codes *)
  78. (* General Errors *)
  79.     cmProfileError*                = -170;
  80.     cmMethodError*                = -171;
  81.     cmMethodNotFound*            = -175;                            (* CMM not present *)
  82.     cmProfileNotFound*            = -176;                            (* Responder error *)
  83.     cmProfilesIdentical*            = -177;                            (* Profiles the same *)
  84.     cmCantConcatenateError*        = -178;                            (* Profile can't be concatenated *)
  85.     cmCantXYZ*                    = -179;                            (* CMM cant handle XYZ space *)
  86.     cmCantDeleteProfile*            = -180;                            (* Responder error *)
  87.     cmUnsupportedDataType*        = -181;                            (* Responder error *)
  88.     cmNoCurrentProfile*            = -182;                            (* Responder error *)
  89. (* Profile Access Errors *)
  90.     cmElementTagNotFound*        = -4200;
  91.     cmIndexRangeErr*                = -4201;                        (* Index out of range *)
  92.     cmCantDeleteElement*            = -4202;
  93.     cmFatalProfileErr*            = -4203;
  94.     cmInvalidProfile*            = -4204;                        (* A Profile must contain a LONG("cs1 ") tag to be valid *)
  95.     cmInvalidProfileLocation*    = -4205;                        (* Operation not supported for this profile location *)
  96. (* Profile Search Errors *)
  97.     cmInvalidSearch*                = -4206;                        (* Bad Search Types.Handle *)
  98.     cmSearchError*                = -4207;
  99.     cmErrIncompatibleProfile*    = -4208;
  100. (* Other ColorSync Errors *)
  101.     cmInvalidColorSpace*            = -4209;                        (* Profile colorspace does not match bitmap type *)
  102.     cmInvalidSrcMap*                = -4210;                        (* Source pix/bit map was invalid *)
  103.     cmInvalidDstMap*                = -4211;                        (* Destination pix/bit map was invalid *)
  104.     cmNoGDevicesError*            = -4212;                        (* Begin/End Matching -- no gdevices available *)
  105.     cmInvalidProfileComment*        = -4213;                        (* Bad Profile comment during drawpicture *)
  106. (* Color Conversion Errors *)
  107.     cmRangeOverFlow*                = -4214;                        (* One or more output color value overflows in color conversion 
  108.                                                         all input color values will still be converted, and the overflown 
  109.                                                         will be clipped *)
  110. (* Other Profile Access Errors *)
  111.     cmCantCopyModifiedV1Profile*    = -4215;                        (* It is illegal to copy version 1 profiles that  
  112.                                                         have been modified *)
  113.  
  114. (* deviceType values for ColorSync 1.0 Device Profile access *)
  115.     cmSystemDevice*                = LONG("sys ");
  116.     cmGDevice*                    = LONG("gdev");
  117.  
  118. (* Commands for CMFlattenUPP(…) *)
  119.     cmOpenReadSpool*                = 1;
  120.     cmOpenWriteSpool*            = 2;
  121.     cmReadSpool*                    = 3;
  122.     cmWriteSpool*                = 4;
  123.     cmCloseSpool*                = 5;
  124.  
  125. (* Flags for PostScript-related functions *)
  126.     cmPS7bit*                    = 1;
  127.     cmPS8bit*                    = 2;
  128.  
  129.     
  130. TYPE
  131.     CMProfileRef* = Types.Ptr;
  132.  
  133. (* Abstract data type for Profile search result *)
  134.     CMProfileSearchRef* = Types.Ptr;
  135.  
  136. (* Abstract data type for BeginMatching(…) reference *)
  137.     CMMatchRef* = Types.Ptr;
  138.  
  139. (* Abstract data type for ColorWorld reference *)
  140.     CMWorldRef* = Types.Ptr;
  141.  
  142. (* Caller-supplied progress function for Bitmap & Quickdraw.PixMap matching routines *)
  143. (* Caller-supplied filter function for Profile search *)
  144.     CMFlattenProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (command: LONGINT; VAR size: LONGINT; data: (*ΔΔUNIVΔΔ*) Types.Ptr; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  145.     CMBitmapCallBackProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (progress: LONGINT; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr): BOOLEAN;
  146.     CMProfileFilterProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (prof: CMProfileRef; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr): BOOLEAN;
  147.     CMFlattenUPP* = Types.UniversalProcPtr;
  148.     CMBitmapCallBackUPP* = Types.UniversalProcPtr;
  149.     CMProfileFilterUPP* = Types.UniversalProcPtr;
  150.  
  151. CONST
  152.     uppCMFlattenProcInfo* = $00003FE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  153.     uppCMBitmapCallBackProcInfo* = $000003D0; (* PROCEDURE (4 byte param, 4 byte param): 1 byte result; *)
  154.     uppCMProfileFilterProcInfo* = $000003D0; (* PROCEDURE (4 byte param, 4 byte param): 1 byte result; *)
  155.  
  156. PROCEDURE NewCMFlattenProc*(userRoutine: CMFlattenProcPtr): CMFlattenUPP;
  157.     (*$IF NOT GENERATINGCFM *)
  158.     INLINE PASCAL $2E9F;
  159.     (*$END*)
  160.  
  161. PROCEDURE NewCMBitmapCallBackProc*(userRoutine: CMBitmapCallBackProcPtr): CMBitmapCallBackUPP;
  162.     (*$IF NOT GENERATINGCFM *)
  163.     INLINE PASCAL $2E9F;
  164.     (*$END*)
  165.  
  166. PROCEDURE NewCMProfileFilterProc*(userRoutine: CMProfileFilterProcPtr): CMProfileFilterUPP;
  167.     (*$IF NOT GENERATINGCFM *)
  168.     INLINE PASCAL $2E9F;
  169.     (*$END*)
  170.  
  171. PROCEDURE CallCMFlattenProc*(command: LONGINT; VAR size: LONGINT; data: (*ΔΔUNIVΔΔ*) Types.Ptr; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; userRoutine: CMFlattenUPP): Types.OSErr;
  172.     (*$IF NOT GENERATINGCFM*)
  173.     INLINE PASCAL $205F, $4E90;
  174.     (*$END*)
  175.  
  176. PROCEDURE CallCMBitmapCallBackProc*(progress: LONGINT; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; userRoutine: CMBitmapCallBackUPP): BOOLEAN;
  177.     (*$IF NOT GENERATINGCFM*)
  178.     INLINE PASCAL $205F, $4E90;
  179.     (*$END*)
  180.  
  181. PROCEDURE CallCMProfileFilterProc*(prof: CMProfileRef; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; userRoutine: CMProfileFilterUPP): BOOLEAN;
  182.     (*$IF NOT GENERATINGCFM*)
  183.     INLINE PASCAL $205F, $4E90;
  184.     (*$END*)
  185.     
  186. TYPE
  187.     CMError* = LONGINT;
  188.  
  189. (* For 1.0 and 2.0 profile header variants *)
  190. (* CMAppleProfileHeader *)
  191.     CMAppleProfileHeader* = RECORD
  192.         (*ΔΔ CASE INTEGER OF
  193.         0: ( *)
  194.     END;
  195.     CMAppleProfileHeader1* = RECORD(CMAppleProfileHeader)
  196.             cm1*:                        CMICCProfile.CMHeader;
  197.            (*ΔΔ );
  198.         1: ( *)
  199.     END;
  200.     CMAppleProfileHeader2* = RECORD(CMAppleProfileHeader)
  201.             cm2*:                        CMICCProfile.CM2Header;
  202.            (*ΔΔ );*)
  203.     END;
  204.  
  205. (* Param for CWConcatColorWorld(…) *)
  206.     CMConcatProfileSet* = RECORD
  207.         keyIndex*:                INTEGER;                                (* Zero-based *)
  208.         count*:                    INTEGER;                                (* Min 1 *)
  209.         profileSet*:                ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF CMProfileRef;            (* Variable. Ordered from Source -> Dest *)
  210.     END;
  211.  
  212. (* ColorSync color data types *)
  213.     CMRGBColor* = RECORD
  214.         red*:                    INTEGER;                                (* 0..65535 *)
  215.         green*:                    INTEGER;
  216.         blue*:                    INTEGER;
  217.     END;
  218.  
  219.     CMCMYKColor* = RECORD
  220.         cyan*:                    INTEGER;                                (* 0..65535 *)
  221.         magenta*:                INTEGER;
  222.         yellow*:                    INTEGER;
  223.         black*:                    INTEGER;
  224.     END;
  225.  
  226.     CMCMYColor* = RECORD
  227.         cyan*:                    INTEGER;                                (* 0..65535 *)
  228.         magenta*:                INTEGER;
  229.         yellow*:                    INTEGER;
  230.     END;
  231.  
  232.     CMHLSColor* = RECORD
  233.         hue*:                    INTEGER;                                (* 0..65535. Fraction of circle. Red at 0 *)
  234.         lightness*:                INTEGER;                                (* 0..65535 *)
  235.         saturation*:                INTEGER;                                (* 0..65535 *)
  236.     END;
  237.  
  238.     CMHSVColor* = RECORD
  239.         hue*:                    INTEGER;                                (* 0..65535. Fraction of circle. Red at 0 *)
  240.         saturation*:                INTEGER;                                (* 0..65535 *)
  241.         value*:                    INTEGER;                                (* 0..65535 *)
  242.     END;
  243.  
  244.     CMLabColor* = RECORD
  245.         L*:                        INTEGER;                                (* 0..65535 maps to 0..100 *)
  246.         a*:                        INTEGER;                                (* 0..65535 maps to -128..127.996 *)
  247.         b*:                        INTEGER;                                (* 0..65535 maps to -128..127.996 *)
  248.     END;
  249.  
  250.     CMLuvColor* = RECORD
  251.         L*:                        INTEGER;                                (* 0..65535 maps to 0..100 *)
  252.         u*:                        INTEGER;                                (* 0..65535 maps to -128..127.996 *)
  253.         v*:                        INTEGER;                                (* 0..65535 maps to -128..127.996 *)
  254.     END;
  255.  
  256.     CMYxyColor* = RECORD
  257.         capY*:                    INTEGER;                                (* 0..65535 maps to 0..1 *)
  258.         x*:                        INTEGER;                                (* 0..65535 maps to 0..1 *)
  259.         y*:                        INTEGER;                                (* 0..65535 maps to 0..1 *)
  260.     END;
  261.  
  262.     CMGrayColor* = RECORD
  263.         gray*:                    INTEGER;                                (* 0..65535 *)
  264.     END;
  265.  
  266.     CMMultichannel5Color* = RECORD
  267.         components*:                ARRAY 5 (*ΔΔ[0..4]ΔΔ*) OF Types.SInt8; (* unsigned char *) (* 0..255 *)
  268.     END;
  269.  
  270.     CMMultichannel6Color* = RECORD
  271.         components*:                ARRAY 6 (*ΔΔ[0..5]ΔΔ*) OF Types.SInt8; (* unsigned char *) (* 0..255 *)
  272.     END;
  273.  
  274.     CMMultichannel7Color* = RECORD
  275.         components*:                ARRAY 7 (*ΔΔ[0..6]ΔΔ*) OF Types.SInt8; (* unsigned char *) (* 0..255 *)
  276.     END;
  277.  
  278.     CMMultichannel8Color* = RECORD
  279.         components*:                ARRAY 8 (*ΔΔ[0..7]ΔΔ*) OF Types.SInt8; (* unsigned char *) (* 0..255 *)
  280.     END;
  281.  
  282.     CMColor* = RECORD
  283.         (*ΔΔ CASE INTEGER OF
  284.         0: (
  285.             rgb*:                        CMRGBColor;
  286.            );
  287.         1: (
  288.             hsv*:                        CMHSVColor;
  289.            );
  290.         2: (
  291.             hls*:                        CMHLSColor;
  292.            );
  293.         3: (
  294.             XYZ*:                        CMXYZColor;
  295.            );
  296.         4: (
  297.             Lab*:                        CMLabColor;
  298.            );
  299.         5: (
  300.             Luv*:                        CMLuvColor;
  301.            );
  302.         6: (
  303.             Yxy*:                        CMYxyColor;
  304.            );
  305.         7: (
  306.             cmyk*:                        CMCMYKColor;
  307.            );
  308.         8: (
  309.             cmy*:                        CMCMYColor;
  310.            );
  311.         9: (
  312.             gray*:                        CMGrayColor;
  313.            );
  314.         10: (
  315.             mc5*:                        CMMultichannel5Color;
  316.            );
  317.         11: (
  318.             mc6*:                        CMMultichannel6Color;
  319.            );
  320.         12: (
  321.             mc7*:                        CMMultichannel7Color;
  322.            );
  323.         13: ( *)
  324.             mc8*:                        CMMultichannel8Color;
  325.            (*ΔΔ );*)
  326.     END;
  327.  
  328.     CMProfileSearchRecord* = RECORD
  329.         header*:                    CMICCProfile.CMHeader;
  330.         fieldMask*:                LONGINT;
  331.         reserved*:                ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF LONGINT;
  332.     END;
  333.  
  334.     CMProfileSearchRecordPtr* = POINTER TO CMProfileSearchRecord;
  335.     CMProfileSearchRecordHandle* = HANDLE TO CMProfileSearchRecord (*ΔΔ POINTER TO CMProfileSearchRecordPtr*);
  336.  
  337. (* Search definition for 2.0 *)
  338.     CMSearchRecord* = RECORD
  339.         CMMType*:                Types.OSType;
  340.         profileClass*:            Types.OSType;
  341.         dataColorSpace*:            Types.OSType;
  342.         profileConnectionSpace*:    Types.OSType;
  343.         deviceManufacturer*:        LONGINT;
  344.         deviceModel*:            LONGINT;
  345.         deviceAttributes*:        ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF LONGINT;
  346.         profileFlags*:            LONGINT;
  347.         searchMask*:                LONGINT;
  348.         filter*:                    CMProfileFilterUPP;
  349.     END;
  350.  
  351. (* GetCWInfo structures *)
  352.     CMMInfoRecord* = RECORD
  353.         CMMType*:                Types.OSType;
  354.         CMMVersion*:                LONGINT;
  355.     END;
  356.  
  357.     CMCWInfoRecord* = RECORD
  358.         cmmCount*:                LONGINT;
  359.         cmmInfo*:                ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF CMMInfoRecord;
  360.     END;
  361.  
  362.  
  363. CONST
  364.     cmNoColorPacking*            = $0000;
  365.     cmAlphaSpace*                = $0080;
  366.     cmWord5ColorPacking*            = $0500;
  367.     cmLong8ColorPacking*            = $0800;
  368.     cmLong10ColorPacking*        = $0a00;
  369.     cmAlphaFirstPacking*            = $1000;
  370.     cmOneBitDirectPacking*        = $0b00;
  371.  
  372.     cmNoSpace*                    = 0;
  373.     cmRGBSpace*                    = 1;
  374.     cmCMYKSpace*                    = 2;
  375.     cmHSVSpace*                    = 3;
  376.     cmHLSSpace*                    = 4;
  377.     cmYXYSpace*                    = 5;
  378.     cmXYZSpace*                    = 6;
  379.     cmLUVSpace*                    = 7;
  380.     cmLABSpace*                    = 8;
  381.     cmReservedSpace1*            = 9;
  382.     cmGraySpace*                    = 10;
  383.     cmReservedSpace2*            = 11;
  384.     cmGamutResultSpace*            = 12;
  385.     cmRGBASpace*                    = cmRGBSpace + cmAlphaSpace;
  386.     cmGrayASpace*                = cmGraySpace + cmAlphaSpace;
  387.     cmRGB16Space*                = cmWord5ColorPacking + cmRGBSpace;
  388.     cmRGB32Space*                = cmLong8ColorPacking + cmRGBSpace;
  389.     cmARGB32Space*                = cmLong8ColorPacking + cmAlphaFirstPacking + cmRGBASpace;
  390.     cmCMYK32Space*                = cmLong8ColorPacking + cmCMYKSpace;
  391.     cmHSV32Space*                = cmLong10ColorPacking + cmHSVSpace;
  392.     cmHLS32Space*                = cmLong10ColorPacking + cmHLSSpace;
  393.     cmYXY32Space*                = cmLong10ColorPacking + cmYXYSpace;
  394.     cmXYZ32Space*                = cmLong10ColorPacking + cmXYZSpace;
  395.     cmLUV32Space*                = cmLong10ColorPacking + cmLUVSpace;
  396.     cmLAB32Space*                = cmLong10ColorPacking + cmLABSpace;
  397.     cmGamutResult1Space*            = cmOneBitDirectPacking + cmGamutResultSpace;
  398.  
  399.     
  400. TYPE
  401.     CMBitmapColorSpace* = LONGINT;
  402.  
  403.     CMBitmap* = RECORD
  404.         image*:                    SYSTEM.PTR (*ΔΔ POINTER TO CHAR*);
  405.         width*:                    LONGINT;
  406.         height*:                    LONGINT;
  407.         rowBytes*:                LONGINT;
  408.         pixelSize*:                LONGINT;
  409.         space*:                    CMBitmapColorSpace;
  410.         user1*:                    LONGINT;
  411.         user2*:                    LONGINT;
  412.     END;
  413.  
  414. (* Classic Print Manager Stuff *)
  415.  
  416. CONST
  417.     enableColorMatchingOp*        = 12;
  418.     registerProfileOp*            = 13;
  419.  
  420. (* PrGeneral parameter blocks *)
  421.  
  422. TYPE
  423.     TEnableColorMatchingBlk* = RECORD
  424.         iOpCode*:                INTEGER;
  425.         iError*:                    INTEGER;
  426.         lReserved*:                LONGINT;
  427.         hPrint*:                    Printing.THPrint;
  428.         fEnableIt*:                BOOLEAN;
  429.     END;
  430.  
  431.     TRegisterProfileBlk* = RECORD
  432.         iOpCode*:                INTEGER;
  433.         iError*:                    INTEGER;
  434.         lReserved*:                LONGINT;
  435.         hPrint*:                    Printing.THPrint;
  436.         fRegisterIt*:            BOOLEAN;
  437.     END;
  438.  
  439.  
  440. CONST
  441.     cmNoProfileBase*                = 0;
  442.     cmFileBasedProfile*            = 1;
  443.     cmHandleBasedProfile*        = 2;
  444.     cmPtrBasedProfile*            = 3;
  445.  
  446.  
  447. TYPE
  448.     CMFileLocation* = RECORD
  449.         spec*:                    Files.FSSpec;
  450.     END;
  451.  
  452.     CMHandleLocation* = RECORD
  453.         h*:                        Types.Handle;
  454.     END;
  455.  
  456.     CMPtrLocation* = RECORD
  457.         p*:                        Types.Ptr;
  458.     END;
  459.  
  460.     CMProfLoc* = RECORD
  461.         (*ΔΔ CASE INTEGER OF
  462.         0: ( *)
  463.             fileLoc*:                    CMFileLocation;
  464.            (*ΔΔ );
  465.         1: (
  466.             handleLoc*:                    CMHandleLocation;
  467.            );
  468.         2: (
  469.             ptrLoc*:                        CMPtrLocation;
  470.            );*)
  471.     END;
  472.  
  473.     CMProfileLocation* = RECORD
  474.         locType*:                INTEGER;
  475.         u*:                        CMProfLoc;
  476.     END;
  477.  
  478. (* Profile file and element access *)
  479.  
  480. PROCEDURE CMOpenProfile*(VAR prof: CMProfileRef; (*CONST*)VAR theProfile: CMProfileLocation): CMError;
  481.     (*$IF NOT GENERATINGCFM*)
  482.     INLINE PASCAL $203C, $0008, $001C, $ABEE;
  483.     (*$END*)
  484. PROCEDURE CMCloseProfile*(prof: CMProfileRef): CMError;
  485.     (*$IF NOT GENERATINGCFM*)
  486.     INLINE PASCAL $203C, $0004, $001D, $ABEE;
  487.     (*$END*)
  488. PROCEDURE CMUpdateProfile*(prof: CMProfileRef): CMError;
  489.     (*$IF NOT GENERATINGCFM*)
  490.     INLINE PASCAL $203C, $0004, $0034, $ABEE;
  491.     (*$END*)
  492. PROCEDURE CMNewProfile*(VAR prof: CMProfileRef; (*CONST*)VAR theProfile: CMProfileLocation): CMError;
  493.     (*$IF NOT GENERATINGCFM*)
  494.     INLINE PASCAL $203C, $0008, $001B, $ABEE;
  495.     (*$END*)
  496. PROCEDURE CMCopyProfile*(VAR targetProf: CMProfileRef; (*CONST*)VAR targetLocation: CMProfileLocation; srcProf: CMProfileRef): CMError;
  497.     (*$IF NOT GENERATINGCFM*)
  498.     INLINE PASCAL $203C, $000C, $0025, $0ABEE;
  499.     (*$END*)
  500. PROCEDURE CMGetProfileLocation*(prof: CMProfileRef; VAR theProfile: CMProfileLocation): CMError;
  501.     (*$IF NOT GENERATINGCFM*)
  502.     INLINE PASCAL $203C, $0008, $003C, $0ABEE;
  503.     (*$END*)
  504. PROCEDURE CMValidateProfile*(prof: CMProfileRef; VAR valid: BOOLEAN; VAR preferredCMMnotfound: BOOLEAN): CMError;
  505.     (*$IF NOT GENERATINGCFM*)
  506.     INLINE PASCAL $203C, $000C, $0026, $0ABEE;
  507.     (*$END*)
  508. PROCEDURE CMFlattenProfile*(prof: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  509.     (*$IF NOT GENERATINGCFM*)
  510.     INLINE PASCAL $203C, $0014, $0031, $0ABEE;
  511.     (*$END*)
  512. PROCEDURE CMUnflattenProfile*(VAR resultFileSpec: Files.FSSpec; proc: CMFlattenUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  513.     (*$IF NOT GENERATINGCFM*)
  514.     INLINE PASCAL $203C, $0010, $0032, $0ABEE;
  515.     (*$END*)
  516. PROCEDURE CMProfileElementExists*(prof: CMProfileRef; tag: Types.OSType; VAR found: BOOLEAN): CMError;
  517.     (*$IF NOT GENERATINGCFM*)
  518.     INLINE PASCAL $203C, $000C, $001E, $0ABEE;
  519.     (*$END*)
  520. PROCEDURE CMCountProfileElements*(prof: CMProfileRef; VAR elementCount: LONGINT): CMError;
  521.     (*$IF NOT GENERATINGCFM*)
  522.     INLINE PASCAL $203C, $0008, $001F, $0ABEE;
  523.     (*$END*)
  524. PROCEDURE CMGetProfileElement*(prof: CMProfileRef; tag: Types.OSType; VAR elementSize: LONGINT; elementData: (*ΔΔUNIVΔΔ*) Types.Ptr): CMError;
  525.     (*$IF NOT GENERATINGCFM*)
  526.     INLINE PASCAL $203C, $0010, $0020, $0ABEE;
  527.     (*$END*)
  528. PROCEDURE CMGetProfileHeader*(prof: CMProfileRef; VAR header: CMAppleProfileHeader): CMError;
  529.     (*$IF NOT GENERATINGCFM*)
  530.     INLINE PASCAL $203C, $0008, $0039, $0ABEE;
  531.     (*$END*)
  532. PROCEDURE CMGetPartialProfileElement*(prof: CMProfileRef; tag: Types.OSType; offset: LONGINT; VAR byteCount: LONGINT; elementData: (*ΔΔUNIVΔΔ*) Types.Ptr): CMError;
  533.     (*$IF NOT GENERATINGCFM*)
  534.     INLINE PASCAL $203C, $0014, $0036, $0ABEE;
  535.     (*$END*)
  536. PROCEDURE CMSetProfileElementSize*(prof: CMProfileRef; tag: Types.OSType; elementSize: LONGINT): CMError;
  537.     (*$IF NOT GENERATINGCFM*)
  538.     INLINE PASCAL $203C, $000C, $0038, $0ABEE;
  539.     (*$END*)
  540. PROCEDURE CMSetPartialProfileElement*(prof: CMProfileRef; tag: Types.OSType; offset: LONGINT; byteCount: LONGINT; elementData: (*ΔΔUNIVΔΔ*) Types.Ptr): CMError;
  541.     (*$IF NOT GENERATINGCFM*)
  542.     INLINE PASCAL $203C, $0014, $0037, $0ABEE;
  543.     (*$END*)
  544. PROCEDURE CMGetIndProfileElementInfo*(prof: CMProfileRef; index: LONGINT; VAR tag: Types.OSType; VAR elementSize: LONGINT; VAR refs: BOOLEAN): CMError;
  545.     (*$IF NOT GENERATINGCFM*)
  546.     INLINE PASCAL $203C, $0014, $0021, $0ABEE;
  547.     (*$END*)
  548. PROCEDURE CMGetIndProfileElement*(prof: CMProfileRef; index: LONGINT; VAR elementSize: LONGINT; elementData: (*ΔΔUNIVΔΔ*) Types.Ptr): CMError;
  549.     (*$IF NOT GENERATINGCFM*)
  550.     INLINE PASCAL $203C, $0010, $0022, $0ABEE;
  551.     (*$END*)
  552. PROCEDURE CMSetProfileElement*(prof: CMProfileRef; tag: Types.OSType; elementSize: LONGINT; elementData: (*ΔΔUNIVΔΔ*) Types.Ptr): CMError;
  553.     (*$IF NOT GENERATINGCFM*)
  554.     INLINE PASCAL $203C, $0010, $0023, $0ABEE;
  555.     (*$END*)
  556. PROCEDURE CMSetProfileHeader*(prof: CMProfileRef; (*CONST*)VAR header: CMAppleProfileHeader): CMError;
  557.     (*$IF NOT GENERATINGCFM*)
  558.     INLINE PASCAL $203C, $0008, $003A, $0ABEE;
  559.     (*$END*)
  560. PROCEDURE CMSetProfileElementReference*(prof: CMProfileRef; elementTag: Types.OSType; referenceTag: Types.OSType): CMError;
  561.     (*$IF NOT GENERATINGCFM*)
  562.     INLINE PASCAL $203C, $000C, $0035, $0ABEE;
  563.     (*$END*)
  564. PROCEDURE CMRemoveProfileElement*(prof: CMProfileRef; tag: Types.OSType): CMError;
  565.     (*$IF NOT GENERATINGCFM*)
  566.     INLINE PASCAL $203C, $0008, $0024, $0ABEE;
  567.     (*$END*)
  568. PROCEDURE CMGetScriptProfileDescription*(prof: CMProfileRef; VAR name: Types.Str255; VAR code: Types.ScriptCode): CMError;
  569.     (*$IF NOT GENERATINGCFM*)
  570.     INLINE PASCAL $203C, $000C, $003E, $0ABEE;
  571.     (*$END*)
  572. (* Low-level matching functions *)
  573. PROCEDURE NCWNewColorWorld*(VAR cw: CMWorldRef; src: CMProfileRef; dst: CMProfileRef): CMError;
  574.     (*$IF NOT GENERATINGCFM*)
  575.     INLINE PASCAL $203C, $000C, $0014, $0ABEE;
  576.     (*$END*)
  577. PROCEDURE CWConcatColorWorld*(VAR cw: CMWorldRef; VAR profileSet: CMConcatProfileSet): CMError;
  578.     (*$IF NOT GENERATINGCFM*)
  579.     INLINE PASCAL $203C, $0008, $0015, $0ABEE;
  580.     (*$END*)
  581. PROCEDURE CWNewLinkProfile*(VAR prof: CMProfileRef; (*CONST*)VAR targetLocation: CMProfileLocation; VAR profileSet: CMConcatProfileSet): CMError;
  582.     (*$IF NOT GENERATINGCFM*)
  583.     INLINE PASCAL $203C, $000C, $0033, $0ABEE;
  584.     (*$END*)
  585. PROCEDURE CWDisposeColorWorld*(cw: CMWorldRef);
  586.     (*$IF NOT GENERATINGCFM*)
  587.     INLINE PASCAL $203C, $0004, $0001, $0ABEE;
  588.     (*$END*)
  589. PROCEDURE CWMatchColors*(cw: CMWorldRef; VAR myColors: CMColor; count: LONGINT): CMError;
  590.     (*$IF NOT GENERATINGCFM*)
  591.     INLINE PASCAL $203C, $000C, $0002, $0ABEE;
  592.     (*$END*)
  593. PROCEDURE CWCheckColors*(cw: CMWorldRef; VAR myColors: CMColor; count: LONGINT; VAR result: LONGINT): CMError;
  594.     (*$IF NOT GENERATINGCFM*)
  595.     INLINE PASCAL $203C, $0010, $0003, $0ABEE;
  596.     (*$END*)
  597. (* Bitmap matching *)
  598. PROCEDURE CWMatchBitmap*(cw: CMWorldRef; VAR bitmap: CMBitmap; progressProc: CMBitmapCallBackUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR matchedBitmap: CMBitmap): CMError;
  599.     (*$IF NOT GENERATINGCFM*)
  600.     INLINE PASCAL $203C, $0010, $002C, $0ABEE;
  601.     (*$END*)
  602. PROCEDURE CWCheckBitmap*(cw: CMWorldRef; (*CONST*)VAR bitmap: CMBitmap; progressProc: CMBitmapCallBackUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR resultBitmap: CMBitmap): CMError;
  603.     (*$IF NOT GENERATINGCFM*)
  604.     INLINE PASCAL $203C, $0014, $002D, $0ABEE;
  605.     (*$END*)
  606. (* Quickdraw-specific matching *)
  607. PROCEDURE CWMatchPixMap*(cw: CMWorldRef; VAR myPixMap: Quickdraw.PixMap; progressProc: CMBitmapCallBackUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr): CMError;
  608.     (*$IF NOT GENERATINGCFM*)
  609.     INLINE PASCAL $203C, $0010, $0004, $0ABEE;
  610.     (*$END*)
  611. PROCEDURE CWCheckPixMap*(cw: CMWorldRef; VAR myPixMap: Quickdraw.PixMap; progressProc: CMBitmapCallBackUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR resultBitMap: Quickdraw.BitMap): CMError;
  612.     (*$IF NOT GENERATINGCFM*)
  613.     INLINE PASCAL $203C, $0014, $0007, $0ABEE;
  614.     (*$END*)
  615. PROCEDURE NCMBeginMatching*(src: CMProfileRef; dst: CMProfileRef; VAR myRef: CMMatchRef): CMError;
  616.     (*$IF NOT GENERATINGCFM*)
  617.     INLINE PASCAL $203C, $000C, $0016, $0ABEE;
  618.     (*$END*)
  619. PROCEDURE CMEndMatching*(myRef: CMMatchRef);
  620.     (*$IF NOT GENERATINGCFM*)
  621.     INLINE PASCAL $203C, $0004, $000B, $0ABEE;
  622.     (*$END*)
  623. PROCEDURE NCMDrawMatchedPicture*(myPicture: Quickdraw.PicHandle; dst: CMProfileRef; VAR myRect: Types.Rect);
  624.     (*$IF NOT GENERATINGCFM*)
  625.     INLINE PASCAL $203C, $000C, $0017, $0ABEE;
  626.     (*$END*)
  627. PROCEDURE CMEnableMatchingComment*(enableIt: BOOLEAN);
  628.     (*$IF NOT GENERATINGCFM*)
  629.     INLINE PASCAL $203C, $0002, $000D, $0ABEE;
  630.     (*$END*)
  631. PROCEDURE NCMUseProfileComment*(prof: CMProfileRef; flags: LONGINT): CMError;
  632.     (*$IF NOT GENERATINGCFM*)
  633.     INLINE PASCAL $203C, $0008, $003B, $0ABEE;
  634.     (*$END*)
  635. (* System Profile access *)
  636. PROCEDURE CMGetSystemProfile*(VAR prof: CMProfileRef): CMError;
  637.     (*$IF NOT GENERATINGCFM*)
  638.     INLINE PASCAL $203C, $0004, $0018, $0ABEE;
  639.     (*$END*)
  640. PROCEDURE CMSetSystemProfile*((*CONST*)VAR profileFileSpec: Files.FSSpec): CMError;
  641.     (*$IF NOT GENERATINGCFM*)
  642.     INLINE PASCAL $203C, $0004, $0019, $0ABEE;
  643.     (*$END*)
  644. (* External Profile Management *)
  645. PROCEDURE CMNewProfileSearch*(VAR searchSpec: CMSearchRecord; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR count: LONGINT; VAR searchResult: CMProfileSearchRef): CMError;
  646.     (*$IF NOT GENERATINGCFM*)
  647.     INLINE PASCAL $203C, $0010, $0027, $0ABEE;
  648.     (*$END*)
  649. PROCEDURE CMUpdateProfileSearch*(search: CMProfileSearchRef; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR count: LONGINT): CMError;
  650.     (*$IF NOT GENERATINGCFM*)
  651.     INLINE PASCAL $203C, $000C, $0028, $0ABEE;
  652.     (*$END*)
  653. PROCEDURE CMDisposeProfileSearch*(search: CMProfileSearchRef);
  654.     (*$IF NOT GENERATINGCFM*)
  655.     INLINE PASCAL $203C, $0004, $0029, $0ABEE;
  656.     (*$END*)
  657. PROCEDURE CMSearchGetIndProfile*(search: CMProfileSearchRef; index: LONGINT; VAR prof: CMProfileRef): CMError;
  658.     (*$IF NOT GENERATINGCFM*)
  659.     INLINE PASCAL $203C, $000C, $002A, $0ABEE;
  660.     (*$END*)
  661. PROCEDURE CMSearchGetIndProfileFileSpec*(search: CMProfileSearchRef; index: LONGINT; VAR profileFile: Files.FSSpec): CMError;
  662.     (*$IF NOT GENERATINGCFM*)
  663.     INLINE PASCAL $203C, $000C, $002B, $0ABEE;
  664.     (*$END*)
  665. (* Utilities *)
  666. PROCEDURE CMGetColorSyncFolderSpec*(vRefNum: INTEGER; createFolder: BOOLEAN; VAR foundVRefNum: INTEGER; VAR foundDirID: LONGINT): CMError;
  667.     (*$IF NOT GENERATINGCFM*)
  668.     INLINE PASCAL $203C, $000C, $0011, $0ABEE;
  669.     (*$END*)
  670. PROCEDURE CMGetCWInfo*(cw: CMWorldRef; VAR info: CMCWInfoRecord): CMError;
  671.     (*$IF NOT GENERATINGCFM*)
  672.     INLINE PASCAL $203C, $000C, $001A, $0ABEE;
  673.     (*$END*)
  674. (* PS-related *)
  675. PROCEDURE CMGetPS2ColorSpace*(srcProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  676.     (*$IF NOT GENERATINGCFM*)
  677.     INLINE PASCAL $203C, $0014, $002E, $0ABEE;
  678.     (*$END*)
  679. PROCEDURE CMGetPS2ColorRenderingIntent*(srcProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  680.     (*$IF NOT GENERATINGCFM*)
  681.     INLINE PASCAL $203C, $0014, $002F, $0ABEE;
  682.     (*$END*)
  683. PROCEDURE CMGetPS2ColorRendering*(srcProf: CMProfileRef; dstProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  684.     (*$IF NOT GENERATINGCFM*)
  685.     INLINE PASCAL $203C, $0018, $0030, $0ABEE;
  686.     (*$END*)
  687. PROCEDURE CMGetPS2ColorRenderingVMSize*(srcProf: CMProfileRef; dstProf: CMProfileRef; VAR vmSize: LONGINT; VAR preferredCMMnotfound: BOOLEAN): CMError;
  688.     (*$IF NOT GENERATINGCFM*)
  689.     INLINE PASCAL $203C, $0010, $003D, $0ABEE;
  690.     (*$END*)
  691. (* ColorSync 1.0 functions which have parallel 2.0 counterparts *)
  692. PROCEDURE CWNewColorWorld*(VAR cw: CMWorldRef; src: CMICCProfile.CMProfileHandle; dst: CMICCProfile.CMProfileHandle): CMError;
  693.     (*$IF NOT GENERATINGCFM*)
  694.     INLINE PASCAL $203C, $000C, $0000, $0ABEE;
  695.     (*$END*)
  696. PROCEDURE ConcatenateProfiles*(thru: CMICCProfile.CMProfileHandle; dst: CMICCProfile.CMProfileHandle; VAR newDst: CMICCProfile.CMProfileHandle): CMError;
  697.     (*$IF NOT GENERATINGCFM*)
  698.     INLINE PASCAL $203C, $000C, $000C, $0ABEE;
  699.     (*$END*)
  700. PROCEDURE CMBeginMatching*(src: CMICCProfile.CMProfileHandle; dst: CMICCProfile.CMProfileHandle; VAR myRef: CMMatchRef): CMError;
  701.     (*$IF NOT GENERATINGCFM*)
  702.     INLINE PASCAL $203C, $000C, $000A, $0ABEE;
  703.     (*$END*)
  704. PROCEDURE CMDrawMatchedPicture*(myPicture: Quickdraw.PicHandle; dst: CMICCProfile.CMProfileHandle; VAR myRect: Types.Rect);
  705.     (*$IF NOT GENERATINGCFM*)
  706.     INLINE PASCAL $203C, $000C, $0009, $0ABEE;
  707.     (*$END*)
  708. PROCEDURE CMUseProfileComment*(profile: CMICCProfile.CMProfileHandle): CMError;
  709.     (*$IF NOT GENERATINGCFM*)
  710.     INLINE PASCAL $203C, $0004, $0008, $0ABEE;
  711.     (*$END*)
  712. PROCEDURE CMGetProfileName*(myProfile: CMICCProfile.CMProfileHandle; VAR IStringResult: CMICCProfile.CMIString);
  713.     (*$IF NOT GENERATINGCFM*)
  714.     INLINE PASCAL $203C, $0008, $000E, $0ABEE;
  715.     (*$END*)
  716. PROCEDURE CMGetProfileAdditionalDataOffset*(myProfile: CMICCProfile.CMProfileHandle): LONGINT;
  717.     (*$IF NOT GENERATINGCFM*)
  718.     INLINE PASCAL $203C, $0004, $000F, $0ABEE;
  719.     (*$END*)
  720. (* ProfileResponder functions *)
  721. PROCEDURE GetProfile*(deviceType: Types.OSType; refNum: LONGINT; aProfile: CMICCProfile.CMProfileHandle; VAR returnedProfile: CMICCProfile.CMProfileHandle): CMError;
  722.     (*$IF NOT GENERATINGCFM*)
  723.     INLINE PASCAL $203C, $0010, $0005, $0ABEE;
  724.     (*$END*)
  725. PROCEDURE SetProfile*(deviceType: Types.OSType; refNum: LONGINT; newProfile: CMICCProfile.CMProfileHandle): CMError;
  726.     (*$IF NOT GENERATINGCFM*)
  727.     INLINE PASCAL $203C, $000C, $0006, $0ABEE;
  728.     (*$END*)
  729. PROCEDURE SetProfileDescription*(deviceType: Types.OSType; refNum: LONGINT; deviceData: LONGINT; hProfile: CMICCProfile.CMProfileHandle): CMError;
  730.     (*$IF NOT GENERATINGCFM*)
  731.     INLINE PASCAL $203C, $0010, $0010, $0ABEE;
  732.     (*$END*)
  733. PROCEDURE GetIndexedProfile*(deviceType: Types.OSType; refNum: LONGINT; search: CMProfileSearchRecordHandle; VAR returnProfile: CMICCProfile.CMProfileHandle; VAR index: LONGINT): CMError;
  734.     (*$IF NOT GENERATINGCFM*)
  735.     INLINE PASCAL $203C, $0014, $0012, $0ABEE;
  736.     (*$END*)
  737. PROCEDURE DeleteDeviceProfile*(deviceType: Types.OSType; refNum: LONGINT; deleteMe: CMICCProfile.CMProfileHandle): CMError;
  738.     (*$IF NOT GENERATINGCFM*)
  739.     INLINE PASCAL $203C, $000C, $0013, $0ABEE;
  740.     (*$END*)
  741. (*$IF OLDROUTINENAMES *)
  742.  
  743. CONST
  744.     kMatchCMMType*                = cmMatchCMMType;
  745.     kMatchApplProfileVersion*    = cmMatchApplProfileVersion;
  746.     kMatchDataType*                = cmMatchDataType;
  747.     kMatchDeviceType*            = cmMatchDeviceType;
  748.     kMatchDeviceManufacturer*    = cmMatchDeviceManufacturer;
  749.     kMatchDeviceModel*            = cmMatchDeviceModel;
  750.     kMatchDeviceAttributes*        = cmMatchDeviceAttributes;
  751.     kMatchFlags*                    = cmMatchFlags;
  752.     kMatchOptions*                = cmMatchOptions;
  753.     kMatchWhite*                    = cmMatchWhite;
  754.     kMatchBlack*                    = cmMatchBlack;
  755.  
  756. (* types *)
  757.     
  758. TYPE
  759.     CMYKColor* = CMCMYKColor;
  760.  
  761.     CWorld* = CMWorldRef;
  762.  
  763.     CMGamutResult* = SYSTEM.PTR (*ΔΔ POINTER TO LONGINT*);
  764.  
  765. (* functions *)
  766.  
  767. PROCEDURE EndMatching*(myRef: CMMatchRef);
  768.     (*$IF NOT GENERATINGCFM*)
  769.     INLINE PASCAL $203C, $0004, $000B, $0ABEE;
  770.     (*$END*)
  771. PROCEDURE EnableMatching*(enableIt: BOOLEAN);
  772.     (*$IF NOT GENERATINGCFM*)
  773.     INLINE PASCAL $203C, $0002, $000D, $0ABEE;
  774.     (*$END*)
  775. PROCEDURE GetColorSyncFolderSpec*(vRefNum: INTEGER; createFolder: BOOLEAN; VAR foundVRefNum: INTEGER; VAR foundDirID: LONGINT): CMError;
  776.     (*$IF NOT GENERATINGCFM*)
  777.     INLINE PASCAL $203C, $000C, $0011, $0ABEE;
  778.     (*$END*)
  779. PROCEDURE BeginMatching*(src: CMICCProfile.CMProfileHandle; dst: CMICCProfile.CMProfileHandle; VAR myRef: CMMatchRef): CMError;
  780.     (*$IF NOT GENERATINGCFM*)
  781.     INLINE PASCAL $203C, $000C, $000A, $0ABEE;
  782.     (*$END*)
  783. PROCEDURE DrawMatchedPicture*(myPicture: Quickdraw.PicHandle; dst: CMICCProfile.CMProfileHandle; VAR myRect: Types.Rect);
  784.     (*$IF NOT GENERATINGCFM*)
  785.     INLINE PASCAL $203C, $000C, $0009, $0ABEE;
  786.     (*$END*)
  787. PROCEDURE UseProfile*(profile: CMICCProfile.CMProfileHandle): CMError;
  788.     (*$IF NOT GENERATINGCFM*)
  789.     INLINE PASCAL $203C, $0004, $0008, $0ABEE;
  790.     (*$END*)
  791. PROCEDURE GetProfileName*(myProfile: CMICCProfile.CMProfileHandle; VAR IStringResult: CMICCProfile.CMIString);
  792.     (*$IF NOT GENERATINGCFM*)
  793.     INLINE PASCAL $203C, $0008, $000E, $0ABEE;
  794.     (*$END*)
  795. PROCEDURE GetProfileAdditionalDataOffset*(myProfile: CMICCProfile.CMProfileHandle): LONGINT;
  796.     (*$IF NOT GENERATINGCFM*)
  797.     INLINE PASCAL $203C, $0004, $000F, $0ABEE;
  798.     (*$END*)
  799. (*$END*)
  800.  
  801. (* $ALIGN RESET*)
  802. (* $POP*)
  803.  
  804.  END CMApplication.
  805.